# Maintainer: Felix Yan <felixonmars@archlinux.org>
# Contributor: ponsfoot <cabezon dot hashimoto at gmail dot com>

# ALARM: Kevin Mihelich <kevin@archlinuxarm.org>
#  - remove --enable-sse2 from configure

pkgbase=marisa
pkgname=('marisa' 'perl-marisa' 'python-marisa' 'ruby-marisa')
pkgver=0.2.6
pkgrel=13
arch=('x86_64')
url="https://github.com/s-yata/marisa-trie"
license=('BSD' 'LGPL')
makedepends=('python' 'ruby' 'perl' 'swig' 'python-setuptools')
source=("marisa-trie-$pkgver.tar.gz::https://github.com/s-yata/marisa-trie/archive/v$pkgver.tar.gz"
        fix-format-security.patch)
sha512sums=('c094e4b22e1457efdd20f2b978ee421b53e36ed94e4fdbd8944136c0ba23da4f6ba9fe3a2c64729c1426aee4dbe8098bfa5eebb943ae7fdaa4eec760485c564d'
            '3583f23c55ccd46cefbd757ef3f82dc7a90f14c64ecf69a99ab3467ca1e6aeddf9822be4c4dffcdbb8841d79fe116cfb8eff0e9b44abaadbcbf8d50a10ab1ec9')

prepare() {
  cd marisa-trie-$pkgver
  autoreconf -i

  # https://github.com/s-yata/marisa-trie/pull/45
  patch -Np1 -i ../fix-format-security.patch
}

build() {
  cd marisa-trie-$pkgver
  # sse2 is part of amd64
  ./configure --prefix=/usr --disable-static
    # --enable-popcnt
    # --enable-sse3
    # --enable-ssse3
    # --enable-sse4.1
    # --enable-sse4.2
    # --enable-sse4
    # --enable-sse4a

  make

  # Regenerate swig bindings
  # remove ruby because it's broken for now
  make -C bindings -j1 swig-perl swig-python

  # Perl bindings
  cd "$srcdir"/marisa-trie-$pkgver/bindings/perl
  perl Makefile.PL \
    INC=-I"$srcdir"/marisa-trie-$pkgver/include \
    LIBS=-L"$srcdir"/marisa-trie-$pkgver/lib/marisa/.libs \
    INSTALLDIRS=vendor
  make

  # Python bindings
  cd "$srcdir"/marisa-trie-$pkgver/bindings/python
  python setup.py build_ext \
    --include-dirs="$srcdir"/marisa-trie-$pkgver/include \
    --library-dirs="$srcdir"/marisa-trie-$pkgver/lib/marisa/.libs
  python setup.py build

  # Ruby bindings
  cd "$srcdir"/marisa-trie-$pkgver/bindings/ruby
  ruby extconf.rb \
    --with-opt-include="$srcdir"/marisa-trie-$pkgver/include \
    --with-opt-lib="$srcdir"/marisa-trie-$pkgver/lib/marisa/.libs \
    --vendor
  make
}

package_marisa() {
  pkgdesc="Static and space-efficient trie data structure library"
  depends=('gcc-libs')

  cd marisa-trie-$pkgver
  make DESTDIR="$pkgdir" install

  install -d "$pkgdir"/usr/share/doc/$pkgbase-$pkgver
  install -m 644 docs/* "$pkgdir"/usr/share/doc/$pkgbase-$pkgver/

  install -d "$pkgdir"/usr/share/licenses/$pkgname
  install -m 644 AUTHORS COPYING.md "$pkgdir"/usr/share/licenses/$pkgname/
}

package_perl-marisa() {
  pkgdesc="Perl language binding for marisa"
  depends=('perl' 'marisa')

  cd marisa-trie-$pkgver/bindings/perl
  make DESTDIR="$pkgdir" install

  cd ../..
  install -d "$pkgdir"/usr/share/licenses/$pkgname
  install -m 644 AUTHORS COPYING.md "$pkgdir"/usr/share/licenses/$pkgname/
}

package_python-marisa() {
  pkgdesc="Python language binding for marisa"
  depends=('python' 'marisa')

  cd marisa-trie-$pkgver/bindings/python
  python setup.py install -O1 --root="$pkgdir"

  cd ../..
  install -d "$pkgdir"/usr/share/licenses/$pkgname
  install -m 644 AUTHORS COPYING.md "$pkgdir"/usr/share/licenses/$pkgname/
}

package_ruby-marisa() {
  pkgdesc="Ruby language binding for marisa"
  depends=('ruby' 'marisa')

  # ruby version without the patch number, e.g. 2.4
  local _rubyver=$(ruby -e"puts Gem.ruby_version.to_s.split('.')[0..1].join('.')")

  cd marisa-trie-$pkgver/bindings/ruby
    _hdrdir=$(pkg-config --variable=rubyhdrdir ruby-$_rubyver)
    _arch=$(pkg-config --variable=arch ruby-$_rubyver)
  make DESTDIR="$pkgdir" install \
    hdrdir="$_hdrdir" \
    arch_hdrdir="${_hdrdir}/${_arch}" \
    rubyhdrdir="$_hdrdir"

  cd ../..
  install -d "$pkgdir"/usr/share/licenses/$pkgname
  install -m 644 AUTHORS COPYING.md "$pkgdir"/usr/share/licenses/$pkgname/
}
